package com.syaccp.model;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 订单表
 *
 * @TableName t_order
 */
@TableName(value = "t_order")
@Accessors(chain = true)
@Data
public class OrderInfo implements Serializable {
    /**
     * 订单表主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 订单编号
     */
    @TableField(value = "order_no")
    private String orderNo;

    /**
     * 项目名称
     */
    @TableField(value = "order_title")
    private String orderTitle;

    /**
     * 订单类型： 1、施工图 2、漫游图 3、效果图
     */
    @TableField(value = "order_type")
    private Integer orderType;

    /**
     * 风格分类
     */
    @TableField(value = "fgfl")
    private Integer fgfl;

    /**
     *
     */
    @TableField(value = "fgfl_name")
    private String fgflName;

    /**
     * 项目主图
     */
    @TableField(value = "image")
    private String image;

    /**
     * 0未付款；1 未付清 ;2 已结算完
     */
    @TableField(value = "balance_flag")
    private Integer balanceFlag;

    /**
     * 订单金额
     */
    @TableField(value = "money")
    private Integer money;

    /**
     * 优惠金额
     */
    @TableField(value = "preferenti_money")
    private Integer preferentiMoney;

    /**
     * 已付款
     */
    @TableField(value = "paid_money")
    private Integer paidMoney;

    /**
     * 尾款
     */
    @TableField(value = "payment")
    private Integer payment;

    /**
     * 欠费标志：1 不欠费；2 欠费
     */
    @TableField(value = "paid_flag")
    private Integer paidFlag;

    /**
     * 客户ID
     */
    @TableField(value = "customer_id")
    private Integer customerId;

    /**
     *
     */
    @TableField(value = "customer_name")
    private String customerName;

    /**
     * 业务员id
     */
    @TableField(value = "salesman_id")
    private Integer salesmanId;

    /**
     * 业务员名称
     */
    @TableField(value = "salesman_name")
    private String salesmanName;

    /**
     * 客服人员id
     */
    @TableField(value = "customer_service_id")
    private Integer customerServiceId;

    /**
     * 客服人员名称
     */
    @TableField(value = "customer_service_name")
    private String customerServiceName;

    /**
     * 图纸数量
     */
    @TableField(value = "drawing")
    private Integer drawing;

    /**
     * 下单时间
     */
    @TableField(value = "order_date")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime orderDate;

    /**
     * 有无图纸
     */
    @TableField(value = "drawing_not")
    private String drawingNot;

    /**
     * 任务总数
     */
    @TableField(value = "task_num")
    private Integer taskNum;

    /**
     * 未完成任务数量
     */
    @TableField(value = "task_num_not")
    private Integer taskNumNot;

    /**
     * 点赞数
     */
    @TableField(value = "praise_num")
    private Integer praiseNum;

    /**
     * 浏览数
     */
    @TableField(value = "browse_num")
    private Integer browseNum;

    /**
     * 收藏数
     */
    @TableField(value = "collection_num")
    private Integer collectionNum;

    /**
     * 评价数量
     */
    @TableField(value = "comment_num")
    private Integer commentNum;

    /**
     * 评价内容
     */
    @TableField(value = "appraise_content")
    private String appraiseContent;

    /**
     * 小程序端用:客户是否公开作品 1 公开；2 不公开
     */
    @TableField(value = "public_flag")
    private Integer publicFlag;

    /**
     * 小程序评价标签: 1 不显示 ；2 显示 所有空间已经完成 ；3 已经评价（如果没有评价，一个月自动为评价）
     */
    @TableField(value = "history_flag")
    private Integer historyFlag;

    /**
     * 效果成绩（客户效果评价）
     */
    @TableField(value = "effect_score")
    private Integer effectScore;

    /**
     * 服务成绩（客户服务评价）
     */
    @TableField(value = "service_score")
    private Integer serviceScore;

    /**
     * 沟通成绩（客户沟通评价）
     */
    @TableField(value = "connect_score")
    private Integer connectScore;

    /**
     * 效率成绩（客户效率评价）
     */
    @TableField(value = "efficiency_score")
    private Integer efficiencyScore;

    /**
     * 完成日期
     */
    @TableField(value = "finish_date")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime finishDate;

    /**
     * 制作公司id
     */
    @TableField(value = "org_id")
    private Integer orgId;

    /**
     * 制作公司名称
     */
    @TableField(value = "org_name")
    private String orgName;

    /**
     * 制作组id
     */
    @TableField(value = "team_id")
    private Integer teamId;

    /**
     * 制作组名称
     */
    @TableField(value = "team_name")
    private String teamName;

    /**
     * 派单方式
     */
    @TableField(value = "dispatch_type")
    private Integer dispatchType;

    /**
     * 附件内容
     */
    @TableField(value = "attachment_context")
    private String attachmentContext;

    /**
     * 附件等级
     */
    @TableField(value = "attachment_type")
    private Integer attachmentType;

    /**
     * 订单状态  1、下单、3、死单、2、 完成
     */
    @TableField(value = "status")
    private Integer status;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @TableField(value = "del_flag")
    @TableLogic(value = "0", delval = "2")
    private Integer delFlag;

    /**
     * 创建者
     */
    @TableField(value = "create_by")
    private Integer createBy;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新者
     */
    @TableField(value = "update_by")
    private Integer updateBy;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 备注
     */
    @TableField(value = "remark")
    private String remark;

    /**
     * 订单品质
     */
    @TableField(value = "order_quality")
    private Integer orderQuality;

    /**
     * 订单品质名称
     */
    @TableField(value = "order_quality_name")
    private String orderQualityName;

    /**
     * 付款金额
     */
    @TableField(exist = false)
    private Integer payMoney;

    /**
     * 接收聚合函数查询结果
     */
    @TableField(exist = false)
    private Double orderDataGathering;

    /**
     * 订单任务信息
     */
    @TableField(exist = false)
    private List<TOrderDetail> orderDetailList;

    /**
     * 订单操作记录
     */
    @TableField(exist = false)
    private List<OrderOperRecord> orderRecordList;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}
